<!DOCTYPE html>
<html>

<head>
  <title>Sedona rewrites insurance premium actuarial engine using Quarkus</title>
  <script id="adobe_dtm" src="https://www.redhat.com/dtm.js" type="text/javascript"></script>
  <script src="/assets/javascript/highlight.pack.js" type="text/javascript"></script>
  <META HTTP-EQUIV='Content-Security-Policy' CONTENT="default-src 'none'; script-src 'self' 'unsafe-eval' 'sha256-ANpuoVzuSex6VhqpYgsG25OHWVA1I+F6aGU04LoI+5s=' 'sha256-ipy9P/3rZZW06mTLAR0EnXvxSNcnfSDPLDuh3kzbB1w=' js.bizographics.com https://www.redhat.com assets.adobedtm.com jsonip.com https://ajax.googleapis.com https://www.googletagmanager.com https://www.google-analytics.com https://use.fontawesome.com; style-src 'self' https://fonts.googleapis.com https://use.fontawesome.com; img-src 'self' *; media-src 'self' ; frame-src https://www.googletagmanager.com https://www.youtube.com; frame-ancestors 'none'; base-uri 'none'; object-src 'none'; form-action 'none'; font-src 'self' https://use.fontawesome.com https://fonts.gstatic.com;">
  <META HTTP-EQUIV='X-Frame-Options' CONTENT="DENY">
  <META HTTP-EQUIV='X-XSS-Protection' CONTENT="1; mode=block">
  <META HTTP-EQUIV='X-Content-Type-Options' CONTENT="nosniff">
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="description" content="Quarkus: Supersonic Subatomic Java">
  <meta name="twitter:card" content="summary_large_image">
  <meta name="twitter:site" content="@QuarkusIO"> 
  <meta name="twitter:creator" content="@QuarkusIO">
  <meta property="og:url" content="https://quarkus.io/blog/sedona-rewrites-insurance-premium/" />
  <meta property="og:title" content="Sedona rewrites insurance premium actuarial engine using Quarkus" />
  <meta property="og:description" content="Quarkus: Supersonic Subatomic Java" />
  <meta property="og:image" content="/assets/images/quarkus_card.png" />
  <link rel="canonical" href="https://quarkus.io/blog/sedona-rewrites-insurance-premium/">
  <link rel="shortcut icon" type="image/png" href="/favicon.ico" >
  <link rel="stylesheet" href="https://quarkus.io/guides/stylesheet/config.css" />
  <link rel="stylesheet" href="/assets/css/main.css" />
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.1.0/css/all.css" integrity="sha384-lKuwvrZot6UHsBSfcMvOkWwlCMgc0TaWr+30HWe3a4ltaBwTZhyTEggF5tJv8tbt" crossorigin="anonymous">
  <link rel="alternate" type="application/rss+xml"  href="https://quarkus.io/feed.xml" title="Quarkus">
  <script src="https://quarkus.io/assets/javascript/goan.js" type="text/javascript"></script>
  <script src="https://quarkus.io/assets/javascript/hl.js" type="text/javascript"></script>
</head>

<body class="post">
  <!-- Google Tag Manager (noscript) -->
  <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NJWS5L"
  height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
  <!-- End Google Tag Manager (noscript) -->

  <div class="nav-wrapper">
  <div class="grid-wrapper">
    <div class="width-12-12">
      <input type="checkbox" id="checkbox" />
      <nav id="main-nav" class="main-nav">
  <div class="container">
    <div class="logo-wrapper">
      
        <a href="/"><img src="/assets/images/quarkus_logo_horizontal_rgb_600px_reverse.png" class="project-logo" title="Quarkus"></a>
      
    </div>
    <label class="nav-toggle" for="checkbox">
      <i class="fa fa-bars"></i>
    </label>
    <div id="menu" class="menu">
      <span>
        <a href="/get-started/" class="">Get Started</a>
      </span>
      <span>
        <a href="/guides/" class="">Guides</a>
      </span>
      <span>
        <a href="/community/" class="">Community</a>
      </span>
      <span>
        <a href="/support/" class="">Support</a>
      </span>
      <span>
        <a href="/blog/" class="active">Blog</a>
      </span>
      <span>
        <a href="https://code.quarkus.io" class="button-cta secondary white">Start Coding</a>
      </span>
    </div>
  </div>
      </nav>
    </div>
  </div>
</div>

  <div class="content">
    <div class="post-page grid-wrapper">
  <div class="width-8-12 width-12-12-m doc-content">
    <div class="grid-wrapper">
      <div class="width-12-12">
        <p>
          <a href="/blog"><i class="fas fa-angle-left"></i> Back to all posts</a>
        </p>
      </div>
      <div class="width-12-12">
        <div class="post-date">
          May 06, 2020 
          
            <span class="tags"><a href="/blog/tag/user-story">#user-story</a></span>
          
        </div>
        <h1 class="post-title">Sedona rewrites insurance premium actuarial engine using Quarkus</h1>
        <div class="grid-wrapper">
          <div class="width-8-12 width-12-12-m byline-wrapper">
            
            
              <img class="headshot" src="https://www.gravatar.com/avatar/33c2cb775850e595c2dc1dedd88ef98d">
            
            <p class="byline">By Cesar Saavedra</p>
          </div>
          <div class="width-12-12">
              <div id="preamble">
<div class="sectionbody">
<div class="imageblock customer-logo">
<div class="content">
<img src="/assets/images/posts/quarkus-user-stories/sedona/sedona-logo.png" alt="Sedona logo" width="300">
</div>
</div>
<div class="paragraph">
<p><a href="https://sedona.fr">Sedona</a>, founded in 1998 and headquartered in Paris, is a consulting and information technology services company with offices in 3 countries: France, Switzerland, and China. Sedona has 180 experts worldwide, with 40% of those based out of the Paris office.</p>
</div>
<div class="paragraph">
<p>Sedona responded to a call for tenders (request for proposal) for a calculation engine for a Financial and Insurance French firm, which had been using Microsoft Excel to perform the estimation of insurance premiums and felt that they had reached the point where they were limited by the capabilities of Excel. They wanted to have a more professional, configurable, customizable, and user-friendly tool to be able to gain competitive advantage in the market, higher speed for quotes to end customers, and better end user experience. With their current Excel-based system, every employee had its own Excel sheet, every employee could change their copy of their excel sheets, that could possibly generate different quotes for the same inputs. They wanted to homogenize and standardize these processes making them less error prone.</p>
</div>
<div class="paragraph">
<p>Sedona’s proposal was to develop a frontend application interfacing with a backend that would be the actual calculation engine, and a back-office solution to manage the configuration of the calculation engine. The backend calculation engine would perform actuarial analysis for the estimation of insurance premiums. With respect to their client’s requirements, the solution needed to include Docker, fast startup time and small RAM consumption. Their client did not care about the framework they used as long as it was based on Java.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="their-path-to-quarkus"><a class="anchor" href="#their-path-to-quarkus"></a>Their path to Quarkus</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Edouard Lamotte, Lead Software Architect and Java team manager at Sedona, has over fifteen years of Java, Java EE and Spring Boot experience. To keep up-to-date with innovations and leading technologies, he and many of his colleagues regularly attend developer conferences like Devoxx, Red Hat Summit, etc. to learn, understand and listen to what big software vendors, communities, and organizations are talking about innovative software technologies and tools.</p>
</div>
<div class="paragraph">
<p>A couple of years ago, they learned about Eclipse MicroProfile, which they liked and thought it was a very good idea to adopt instead of Spring because MicroProfile was a community-driven Java specification for microservices. They had tried the MicroProfile implementation by Thorntail and had gained experience implementing microservices using this technology. Another reason they considered MicroProfile was because they wanted to standardize on a single technology stack and avoid having their developers mix technology stacks: one using Spring Boot, another one using Micronaut, for example. So, these were the most salient reasons why they decided to use MicroProfile.</p>
</div>
<div class="paragraph">
<p>The same way they had come across MicroProfile, about a year later they learned about Quarkus, which impressed them a lot because it implemented a wide variety of extensions and frameworks including MicroProfile. In due diligence, they researched Quarkus on the internet for comparisons of Quarkus and other technologies. They also tried different starter projects from GitHub for all these technologies: Micronaut, Thorntail, SparkJava, Quarkus. After a thorough evaluation, the reasons why they selected Quarkus were as follows:</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Quarkus has a container-first approach</p>
</li>
<li>
<p>It is Kubernetes-native</p>
</li>
<li>
<p>It has a fast start-up time</p>
</li>
<li>
<p>It consumes little RAM</p>
</li>
<li>
<p>Live coding</p>
</li>
</ol>
</div>
<div class="paragraph">
<p>Lastly, the application they needed to develop for their customer was not too big so they felt comfortable to try out a new technology like Quarkus. If things didn’t work out, they could roll back to a different technology.</p>
</div>
<div class="sect2">
<h3 id="an-active-community"><a class="anchor" href="#an-active-community"></a>An active community</h3>
<div class="paragraph">
<p>The fact that the Quarkus open source project had good developers and architects behind it and that it was sponsored by Red Hat were key reasons for Sedona’s decision to select Quarkus. Another important factor was that Quarkus has a big very active community and ever growing ecosystem of extensions and third-party layered offerings. One more reason was the fact that <em>“the Red Hat developers working on Quarkus had expertise with MicroProfile and this was an extra plus for Sedona”</em>, Edouard asserted.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="about-the-application"><a class="anchor" href="#about-the-application"></a>About the application</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The calculation engine can be seen as a microservice exposing REST endpoints. Sedona had been working on this architecture pattern for a few years.  Microservices are usually run in containers, so the issues of deliverability with a small footprint (~75MB) and fast start up (&lt;2s) are important considerations. Sedona used to work on Spring but this framework seemed too heavy, too resource consuming, and above all, it is not a Java standard.</p>
</div>
<div class="paragraph">
<p>Having studied and used different frameworks, such as Spark Java, Eclipse MicroProfile, Thorntail, and Micronaut, the one that piqued Sedona’s interest was Quarkus because of its container first approach and its native compatibility with a Kubernetes environment.</p>
</div>
<div class="paragraph">
<p>The client&#8217;s immediate constraints were to develop in Java, to deliver docker images, and to move to a Kubernetes environment in the near future. Quarkus was therefore the solution that met these constraints. Moreover, the integration to GraalVM seemed to Sedona to be a plus.</p>
</div>
<div class="paragraph">
<p>With this solution, they can now manage these processes centrally and all employees will use the same calculation engine for more accurate and consistent quoting.</p>
</div>
<div class="paragraph">
<p>The application was deployed to production on January 15, 2020, is running on virtual machines in a private cloud. At the time of this interview, they hadn’t seen any performance issues with the application. In the last couple of months, they have seen an increase in traffic that resulted in the scaleup of the application. Again, this happened smoothly without any issues.</p>
</div>
<div class="paragraph">
<p>An important benefit that the Quarkus application is delivering to their customer is that they will be able to handle higher traffic rates on the same hardware due to the application consuming less memory and having faster startup times. In other words, their customer will be able to get higher workload densities on their existing hardware.</p>
</div>
<div class="paragraph">
<p>The resources dedicated to this project were: one architect, one project manager, and three full stack developers (Angular, Java). They started development in mid July 2019 and went to production the second week of January 2020 for a total of six months.</p>
</div>
<div class="paragraph">
<p>The delivered Quarkus application is containerized using Docker and the management of the containers is done with Docker Compose. The configuration of the VMs is done with Ansible scripts.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="easy-to-pick-up-even-for-net-developers"><a class="anchor" href="#easy-to-pick-up-even-for-net-developers"></a>Easy to pick up even for .NET developers</h2>
<div class="sectionbody">
<div class="paragraph">
<p>For Edouard, who had Spring Boot, MicroProfile, and Java EE experience, it was very easy to pick up Quarkus; <em>“I’m from the Spring, Java EE and MicroProfile world and Quarkus supported MicroProfile so the transition was easy”</em>, Edouard asserted. In general, Sedona developers have strong experience with Java EE and Java technologies like Hibernate, RESTEasy, etc., and Quarkus provided extensions for all of these. This made it easy for them to ramp up on Quarkus fast. In addition, the <em>“Quarkus documentation is very good to get started with Quarkus”</em>, he added.</p>
</div>
<div class="paragraph">
<p>In terms of developer culture, Sedona encourages their developers to learn and be able to switch from one technology to another and this was the case with their .NET developers. One of them is Jocelyn P., who was also a member of the development of their Quarkus application. It took him about one month to start developing in Quarkus, and between 2 to 3 months, to get proficient and productive on his own. Here’s a quote from Jocelyn with respect to Quarkus:</p>
</div>
<div class="paragraph">
<p><strong>Jocelyn P. (.NET developer):</strong>
<em>“At the beginning, it was a little bit hard to use Quarkus. But after a couple of months of use, I think it’s a good framework, easy to use and fast on the bootstrap and live reload. I particularly liked the data access overlay (Panache) which allows to perform any database reading operation without writing SQL including slightly more complex queries without altering performance even on large volumes of data. The REST client will be very appreciated with the next version of Quarkus. As Quarkus innovates, I will continue to learn and exploit its benefits and better understand all its possibilities”</em>.</p>
</div>
<div class="paragraph">
<p>Sedona also has Spring developers. Here’s a testimonial from Mathias B.:</p>
</div>
<div class="paragraph">
<p><strong>Mathias B. (Spring Developer):</strong>
<em>“With Quarkus, we stay on the standard to develop a complete restful backend that&#8217;s lightweight and starts up really fast. A few points that I appreciate about Quarkus are:
- The documentation/guides are clean and straightforward. (we even have a quickstart on the site).
- Panache entities that simplify DAO/Repositories management
- Native version control integration for BDD (Flyway) (to manage database versions)
- Native and simple CRON management via annotation (Scheduler extension)”</em>.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="the-benefits"><a class="anchor" href="#the-benefits"></a>The benefits</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Sedona found Quarkus' live coding capability very impressive. Edouard mentioned that <em>“live coding is developer-friendly and very easy to use with different IDEs”</em>. They found that they could integrate a Quarkus project easily with their favorite IDE. He added <em>“you start your Quarkus application and you can modify your Java class and your changes are instantaneously and seamlessly reloaded”</em>. As an example, for one of their REST-API-based applications, <em>“it takes about 2-3 seconds to do a live reload with Quarkus, whereas with Spring Boot it was taking 30 seconds to reload”</em>, he mentioned as he described their first experience with Quarkus vis-a-vis Spring Boot. They also found the Hibernate ORM with Panache extension very useful and helpful in speeding up development.</p>
</div>
<div class="paragraph">
<p>Another benefit that impressed Sedona was the very small time to first-response that Quarkus delivers. <em>“Fast startup is really amazing”</em>, Edouard stated. They think that for scaling up microservices and lowering application response times for web applications, fast startup times are very important.</p>
</div>
<div class="paragraph">
<p>At present, Edouard mentioned <em>“we are using Quarkus in JVM mode on containers but in the future, we are already planning to use Quarkus in native mode on Kubernetes and serverless environments, where native mode will be ideal”</em>.</p>
</div>
<div class="paragraph">
<p>In general, Sedona’s opinion of Quarkus is <em>“clearly positive, Quarkus is the fastest framework in terms of bootstrapping and hot reload that we have used so far”</em>.</p>
</div>
<div class="paragraph">
<p>They also develop in Kotlin, which is also supported by Quarkus.</p>
</div>
<div class="paragraph">
<p>Finally, the small learning curve experienced by their developers, the simplicity of management to configure different environments, such as development, test and production, the live coding, and the fast startup capabilities of Quarkus allowed Sedona’s developers to increase their productivity to deliver solutions faster to their customers.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="going-forward"><a class="anchor" href="#going-forward"></a>Going forward</h2>
<div class="sectionbody">
<div class="paragraph">
<p>It’s Edouard’s first time going to production with a technology at 0.19 version (not version 1.0 yet). This talks to the high quality and reliable software developed by the Quarkus engineers and community.</p>
</div>
<div class="paragraph">
<p>Sedona has decided to continue to use Quarkus for future projects and they believe <em>“it’s a good bet for the future”</em>.</p>
</div>
<div class="paragraph">
<p>Update: Sedona updated Quarkus to 1.4 at the end of April 2020. Sedona is presently starting two new Quarkus projects (in native mode), one for a microservices project and the other for a serverless project (using AWS Lambda).</p>
</div>
<div class="paragraph">
<p>For more information on Quarkus:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Quarkus website: <a href="http://quarkus.io" class="bare">http://quarkus.io</a></p>
</li>
<li>
<p>Quarkus GitHub project: <a href="https://github.com/quarkusio/quarkus" class="bare">https://github.com/quarkusio/quarkus</a></p>
</li>
<li>
<p>Quarkus Twitter: <a href="https://twitter.com/QuarkusIO" class="bare">https://twitter.com/QuarkusIO</a></p>
</li>
<li>
<p>Quarkus chat: <a href="https://quarkusio.zulipchat.com/" class="bare">https://quarkusio.zulipchat.com/</a></p>
</li>
<li>
<p>Quarkus mailing list: <a href="https://groups.google.com/forum/#!forum/quarkus-dev" class="bare">https://groups.google.com/forum/#!forum/quarkus-dev</a></p>
</li>
<li>
<p><a href="https://youtube.com/quarkusio">Quarkus YouTube Channel</a></p>
</li>
<li>
<p><a href="https://www.redhat.com/cms/managed-files/cl-4-reasons-try-quarkus-checklist-f19180cs-201909-en.pdf">Four reasons to use Quarkus</a></p>
</li>
</ul>
</div>
</div>
</div>
              
          </div>
          <div class="width-12-12"><div class="share-page">
  <a class="share-linkedin" href="https://www.linkedin.com/shareArticle?mini=true&url=https://quarkus.io/blog/sedona-rewrites-insurance-premium/&title=Sedona rewrites insurance premium actuarial engine using Quarkus" rel="nofollow" target="_blank" title="Share on LinkedIn">
    <img src="/assets/images/share-page/icons_social-linkedin.png"/>
  </a>
  <a class="share-twitter" href="https://twitter.com/intent/tweet?text=Sedona rewrites insurance premium actuarial engine using Quarkus&url=https://quarkus.io/blog/sedona-rewrites-insurance-premium/&via=quarkusio&related=quarkusio" rel="nofollow" target="_blank" title="Share on Twitter">
    <img src="/assets/images/share-page/icons_social-twitter.png"/>
  </a>
  <a class="share-facebook" href="https://facebook.com/sharer.php?u=https://quarkus.io/blog/sedona-rewrites-insurance-premium/" rel="nofollow" target="_blank" title="Share on Facebook">
    <img src="/assets/images/share-page/icons_social-facebook.png"/>
  </a>
  <a class="share-reddit" href="http://www.reddit.com/submit?url=https://quarkus.io/blog/sedona-rewrites-insurance-premium/" onclick="window.open(this.href, 'pop-up', 'left=20,top=20,width=900,height=500,toolbar=1,resizable=0'); return false;" title="Share on Reddit" >
    <img src="/assets/images/share-page/icons_social-reddit.png"/>
  </a>
  <a class="share-email" href="mailto:?subject=Sedona rewrites insurance premium actuarial engine using Quarkus&amp;body=Sedona rewrites insurance premium actuarial engine using Quarkus https://quarkus.io/blog/sedona-rewrites-insurance-premium/" title="Share via Email" >
    <img src="/assets/images/share-page/icons_social-email.png"/>
  </a>
</div>
</div>
        </div>
      </div>
    </div>
  </div>
</div>

  </div>

  <div class="content project-footer">
  <div class="footer-section">
    <div class="logo-wrapper">
      <a href="/"><img src="/assets/images/quarkus_logo_horizontal_rgb_reverse.svg" class="project-logo" title="Quarkus"></a>
    </div>
  </div>
  <div class="grid-wrapper">
    <p class="grid__item width-3-12">Quarkus is open. All dependencies of this project are available under the <a href='https://www.apache.org/licenses/LICENSE-2.0' target='_blank'>Apache Software License 2.0</a> or compatible license.<br /><br />This website was built with <a href='https://jekyllrb.com/' target='_blank'>Jekyll</a>, is hosted on <a href='https://pages.github.com/' target='_blank'>Github Pages</a> and is completely open source. If you want to make it better, <a href='https://github.com/quarkusio/quarkusio.github.io' target='_blank'>fork the website</a> and show us what you’ve got.</p>

    
      <div class="width-1-12 project-links">
        <span>Navigation</span>
        <ul class="footer-links width-1-12">
          
            <li><a href="/">Home</a></li>
          
            <li><a href="/guides">Guides</a></li>
          
            <li><a href="/community/#contributing">Contribute</a></li>
          
            <li><a href="/faq">FAQ</a></li>
          
            <li><a href="/get-started">Get Started</a></li>
          
        </ul>
      </div>
    
      <div class="width-1-12 project-links">
        <span>Contribute</span>
        <ul class="footer-links width-1-12">
          
            <li><a href="https://twitter.com/quarkusio">Follow us</a></li>
          
            <li><a href="https://github.com/quarkusio">GitHub</a></li>
          
            <li><a href="/security">Security&nbsp;policy</a></li>
          
        </ul>
      </div>
    
      <div class="width-1-12 project-links">
        <span>Get Help</span>
        <ul class="footer-links width-1-12">
          
            <li><a href="https://groups.google.com/forum/#!forum/quarkus-dev">Forums</a></li>
          
            <li><a href="https://quarkusio.zulipchat.com">Chatroom</a></li>
          
        </ul>
      </div>
    

    
      <div class="width-3-12 more-links">
        <span>Quarkus is made of community projects</span>
        <ul class="footer-links">
          
            <li><a href="https://vertx.io/" target="_blank">Eclipse Vert.x</a></li>
          
            <li><a href="https://microprofile.io" target="_blank">Eclipse MicroProfile</a></li>
          
            <li><a href="https://hibernate.org" target="_blank">Hibernate</a></li>
          
            <li><a href="https://netty.io" target="_blank">Netty</a></li>
          
            <li><a href="https://resteasy.github.io" target="_blank">RESTEasy</a></li>
          
            <li><a href="https://camel.apache.org" target="_blank">Apache Camel</a></li>
          
            <li><a href="https://code.quarkus.io/" target="_blank">And many more...</a></li>
          
        </ul>
      </div>
    
  </div>
</div>
  <div class="content redhat-footer">
  <div class="grid-wrapper">
    <span class="licence">
      <i class="fab fa-creative-commons"></i><i class="fab fa-creative-commons-by"></i> <a href="https://creativecommons.org/licenses/by/3.0/" target="_blank">CC by 3.0</a> | <a href="https://www.redhat.com/en/about/privacy-policy">Privacy Policy</a>
    </span>
    <span class="redhat">
      Sponsored by
    </span>
    <span class="redhat-logo">
      <a href="https://www.redhat.com/" target="_blank"><img src="/assets/images/redhat_reversed.svg"></a>
    </span>
  </div>
</div>


  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js" integrity="sha384-8gBf6Y4YYq7Jx97PIqmTwLPin4hxIzQw5aDmUg/DDhul9fFpbbLcLh3nTIIDJKhx" crossorigin="anonymous"></script>
  <script type="text/javascript" src="/assets/javascript/mobile-nav.js"></script>
  <script type="text/javascript" src="/assets/javascript/scroll-down.js"></script>
  <script src="/assets/javascript/satellite.js" type="text/javascript"></script>
  <script src="https://quarkus.io/guides/javascript/config.js" type="text/javascript"></script>
  <script src="/assets/javascript/search-filter.js" type="text/javascript"></script>
  <script src="/assets/javascript/back-to-top.js" type="text/javascript"></script>
</body>

</html>
